//2765.最长交替子数组
//https://leetcode.cn/problems/longest-alternating-subarray/?envType=daily-question&envId=2024-01-23
class Solution {
public:
    int alternatingSubarray(vector<int>& nums) {
        int ret = -1;
        int n = nums.size();
        int i = 0;
        while(i < n-1)
        {
            //如果i+1和i位置的数字相减不为1则换起始位置 起始位置必须相差1且两数相差规则为 1 -1 1 -1
            if(nums[i+1]-nums[i] != 1) {++i; continue;}
            int k = i; //记录当前位置
            i += 2; //i前往下一个数 判断是否相同
            //此时我们的数为3434545 那么nums[i] == nums[i-2] 即3=3 4=4 间隔数之间相同
            while(i<n && nums[i] == nums[i-2]) ++i;
            ret = max(ret,i-k); //最终位置减去起始位置就是子数组长度
            //当遍历到不相等时 需要退格到是一个数
            --i;
        }
        return ret;
    }
};